home *** CD-ROM | disk | FTP | other *** search
/ BCI NET 2 / BCI NET 2.iso / archives / programming / languages / fpl-v115.lha / fpl / HISTORY < prev    next >
Encoding:
Text File  |  1995-03-09  |  7.7 KB  |  206 lines

  1. HISTORY of changes
  2.  
  3. Syntax description:
  4.     * Bug fix
  5.     + New feature
  6.     - Note/change
  7.     : Obsolete/old stuff
  8.  
  9. ------------------------------------------------------------------------------
  10.  
  11. 11.5    * [Amiga] The internal table of funclibs did not survive after the
  12.       program that opened a funclib quit! Now it does...
  13.  
  14.     * [Amiga] Added RESETOPTIONS to the compiler flags to ignore all those
  15.       *stupid* ENV:sc/SCOPTIONS used by people who try to compile FPL...
  16.  
  17. 11.4    * "\x" didn't work with uppercase letters in the hexadecimal number!
  18.  
  19.     * Accessing an array illegally when *not* declaring, made FPL to
  20.       strcpy() a NULL pointer...
  21.  
  22.     * Assigning a string variable like
  23.         string a,b;
  24.         a = b
  25.       where 'b' never was initialized could lead to 'out of memory'!
  26.  
  27. 11.3    + stristr(), stricmp() and strnicmp() were added to the language!
  28.  
  29. 11.2    * Another small fix to break-within-switch. This is the third in a row
  30.       of bugs discovered by Björn when I've been planning to make a public
  31.       release...!
  32.  
  33.     * Argh!! Forgot to check if it really was a break that broke a
  34.       switch(), which made strange results on i.e return()s from within
  35.       switch()es...!
  36.  
  37.     * Breaks within a switch() could get left after the switch() statement
  38.       so that one 'break' happened to break out of several levels!
  39.  
  40.     * Using 'break' with a too high level parameter now results in the
  41.       (much better) 'illegal break' error message...
  42.  
  43. 11.1    Released to Björn for test use in FrexxLink
  44.  
  45.     * The 'break' keyword didn't work in a program like:
  46.       while(1) {
  47.         if(1) {
  48.               if(1)
  49.                 break;
  50.             }
  51.             /* shouldn't reach this but did previously! */
  52.           }
  53.     
  54. 11.0    Pre-release only used by a minimum of people.
  55.  
  56.     * [Amiga] funclib/lib.c didn't remove the "libTest2" function on exit!
  57.  
  58.     * #pragma nocache was no real success if FPL decided that the program
  59.       was subject for caching...
  60.  
  61.     * Cleaned up a bit more, and made more functions return proper error
  62.       messages.
  63.  
  64.     + Seven new error messages have been added to help debugging FPL
  65.       programs. The new ones are more specified of what exactly the error
  66.       is. Of course I remade a few details to make them use the new
  67.       errors. Read the updated (at last) chapter in the documentation!
  68.  
  69. 10.7    * Accessing a string array with i.e foobar[-1] now generates
  70.       'illegal array "foobar" error!' instead of previous 'out of reach
  71.       error!'.
  72.  
  73.     * The since a long time known, but very-hard-to-find bug that made FPL
  74.       loose control of the line number in error messages is now removed.
  75.       It occured in situations like:
  76.  
  77.         if/while ( FALSE )
  78.           STATEMENT;
  79.  
  80.           The newlines between 'STATEMENT' and the following statement were
  81.       then counted twice...!
  82.  
  83.     * A single exported/global string variable that was assigned at
  84.       declaration time wasn't properly taken care of. Later use of the
  85.       variable could lead to crashes!
  86.  
  87. 10.6    * FPLTAG_KIDNAP_CACHED was fixed and should be working now!
  88.  
  89.     - Since we're planning a release (software based on FPL) on OS/2, all
  90.       packages from now is gonna be multi-platform. It means a few things:
  91.       o ASCII formatted docs will be included as well as the .guide ones.
  92.       o Binary versions of FPL.DLL (OS/2) and FPLlib.so (Intel SVR4 UNIX)
  93.         will be included.
  94.       o The archive directory tree now holds the directories bin_amiga/,
  95.         bin_os2/ and bin_svr4/.
  96.  
  97. 10.5    * Assigning a global/exported string variable after it had been
  98.       "globalfied", did cause a crash!
  99.  
  100.     * Deleting a global/exported variable with DelIdentifier was not
  101.       healthy...
  102.  
  103.     + Made both fplDealloc() and fplDealloca() capable of freeing memory
  104.       allcated both with fplAlloc() and fplAlloca(). They're now virtually
  105.       the same function.
  106.  
  107.     + Introducing the FPLREF_ARRAY_RESIZE... This tag to fplReference()
  108.       enables the host program to resize the array to which a reference
  109.       was sent as parameter to a function. I have to increase the library
  110.       version number for the next public/developer release!
  111.  
  112.     * Using 'resize' on arrays that were declared as global/exported
  113.       did result in system crashes!
  114.  
  115.     * Improved the error message when trying to refer to non-existing
  116.       or negative array fields. Could previously easily contain the wrong
  117.       variable name.
  118.       Did the same to illegal 'resize' operations.
  119.  
  120. 10.4    + Added FPLSEND_GETRETURNINT, which returns a pointer to the value
  121.       returned by a program. If no value was returned, this will return
  122.       NULL.
  123.  
  124.     * Fixed the fplExecuteXXXXXX() invokes that allow strings to get
  125.       returned so that the string pointer is set to NULL if a string
  126.       wasn't returned. Previous versions didn't touch the pointer in such
  127.       situations.
  128.  
  129. 10.3    * Fixed another small detail with the nested runnings and failure.
  130.       Nobody has experienced any trouble with it though.
  131.  
  132. 10.2    * Execution of nested files (and an error in a nested level) could
  133.       lead to files being cached accidentaly, which could lead to serious
  134.       confusion!
  135.  
  136. 10.1    + FPL now offers external variables to be added just like functions
  137.       have been a long time. With the function fplAddVariable(), they
  138.       will be added and recognized instantly by FPL. Added variables are
  139.       always read-only, and all reads from them causes the interface
  140.       function to get called as in a regular external function case, and
  141.       the returned value (with 'fplSend()') will be the result of the
  142.       variable read. The fplArgument struct has been extended with an
  143.       extra member which will hold the default variable result, the result
  144.       that will be the variable contents if the interface function doesn't
  145.       return anything.
  146.  
  147.     * Fixed some serious errors when FPL found 'const' variables. It did
  148.       not prevent some changes, and some changes caused peculiar error
  149.       messages!
  150.  
  151.     * Fixed a bug in the fplAllocString() which made the fplReference()
  152.       or fplSend() where the string could be used to cause damage to
  153.       the system's memory list.
  154.  
  155. 10.0    FPL VERSION 10
  156.     ~~~~~~~~~~~~~~
  157.     We've now reached version 10. The version number increase is because
  158.     of the following reasons:
  159.  
  160.     + The expression parsing is now 100% C compatible to the very last
  161.       detail AFAIK!! Expressions like the following are now treated the
  162.       C-style way:
  163.  
  164.       1) if(a++ && b++)...  the right part is only executed if the left
  165.          part was evaluated TRUE
  166.  
  167.       2) if(a++ || b++)... the right part is only executed if the left
  168.          part was evaluated FALSE
  169.  
  170.       3) if(a ? b++ : c++ )... "b++" is only executed if 'a' evaluates
  171.          TRUE, and "c++" if 'a' evaluates FALSE
  172.  
  173.     + FPL now allows array references sent as parameters to functions. Such
  174.       parameters are declared as "int *array[]" or simply "int *[]" for
  175.       integer arrays.
  176.  
  177.     + fplReference() now features:
  178.       FPLREF_TYPE_ARRAY is now a valid type bit returned by the FPLREF_TYPE
  179.       tag.
  180.       FPLREF_ARRAY_ITEM lets you set which array item you want to read or
  181.       write. The strings/ints are still read with the previous tags for
  182.       those purposes (or the new ones described below).
  183.       FPLREF_ARRAY_INFO gives you information about the looks of the
  184.       referenced array variable.
  185.       FPLREF_SET_MY_STRING makes a normal string valid as new string for
  186.       a referenced variable. The length can be set with...
  187.       FPLREF_SET_MY_STRLEN defines the length of the string set with the
  188.       tag above.
  189.  
  190.     + fplInit() features this new tag:
  191.       FPLTAG_PREVENT_RUNNING_SAME which will make FPL to abort any tries
  192.       to run a program that already is cashed. The FPLTAG_REREAD_CHANGES
  193.       tag still works fine with this though.
  194.  
  195.     + fplSend() features these new tags:
  196.       FPLSEND_RESULT which will give fplSend() a long to store results in.
  197.       FPLSEND_IS_FILE_CACHED will give information regarding if the
  198.       specified file is cached (held in memory) or not.
  199.  
  200.     + sprintf() is a new FPL function. Features all ANSI C %-codes plus
  201.       a few additional ones:
  202.       %o - octal number
  203.       %b - binary number
  204.       %n - number of characters
  205.       %P - pointer shown with uppercase letters
  206.